package org.lql.algo.codecrush.week005;

/**
 * @author: liangqinglong
 * @date: 2025-08-05 17:55
 * @description: LCR 134. Pow(x, n) <a href="https://leetcode.cn/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/description/">...</a>
 **/
public class MyPow {

	/**
	 * 实现 pow(x, n) ，即计算 x 的 n 次幂函数（即，xn）。
	 * <p>
	 * <p>
	 * <p>
	 * 示例 1：
	 * <p>
	 * 输入：x = 2.00000, n = 10
	 * 输出：1024.00000
	 * 示例 2：
	 * <p>
	 * 输入：x = 2.10000, n = 3
	 * 输出：9.26100
	 * 示例 3：
	 * <p>
	 * 输入：x = 2.00000, n = -2
	 * 输出：0.25000
	 * 解释：2-2 = 1/22 = 1/4 = 0.25
	 * <p>
	 * <p>
	 * 提示：
	 * <p>
	 * -100.0 < x < 100.0
	 * -231 <= n <= 231-1
	 * -104 <= xn <= 104
	 */
	public double myPow(double x, int n) {
		if (n == 0) {
			return 1;
		}
		if (n < 0) {
			x = 1 / x;
			n = -n;
		}
		if (n % 2 == 0) {
			return myPow(x * x, n / 2);
		}
		return x * myPow(x, n - 1);
	}

	public static void main(String[] args) {
		MyPow myPow = new MyPow();
		System.out.println(myPow.myPow(2.0, -2));
		System.out.println(myPow.myPow(2.1, 3));
	}
}
